﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace aula14
{
    class Program
    {
        delegate int Operador(int x);
        public static int Quadrado(int x) {
            Console.WriteLine("nada faz!");
            return x * x; }
        public static int Cubo(int x) { return x * x * x; }

        static void Main(string[] args)
        {
            //Exemplo 1
            Console.WriteLine("Exemplo 1");
            Stack<int> stack = new Stack<int>();
            stack.Push(5);
            stack.Push(19);
            int x = stack.Pop();
            int y = stack.Pop();
            Console.WriteLine(x + ":" + y);
            

            //Exemplo 2
            Console.WriteLine("Exemplo 2");
            int a = 10;
            int b = 11;
            Console.WriteLine(a + ":" + b);
            Troca.Swap(ref a, ref b);
            Console.WriteLine(a + ":" + b);

            //Exemplo 3
            Console.WriteLine("Exemplo 3");
            Operador Op1 = Quadrado;
            Console.WriteLine(Op1(3));
            Op1 = Cubo;
            Console.WriteLine(Op1(3));
            

            //Exemplo 4
            Console.WriteLine("Exemplo 4");
            Op1 = Quadrado;
            Op1 += Cubo;
            int z = Op1(3);
            Console.WriteLine(z);
            Console.ReadLine();
        }
    }
}
